import dayjs from 'dayjs'

const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss'
const DATE_FORMAT = 'YYYY-MM-DD'

/**
 * 将传入的日期转换为指定格式的字符串
 *
 * @param date 日期对象，可以是一个 Date 对象、时间戳、ISO 8601 字符串或符合 dayjs 支持的其他格式
 * @param format 日期格式，默认为 DATE_TIME_FORMAT（需要在使用前定义）
 * @returns 格式化后的日期字符串
 */
export function formatToDateTime(
  date?: dayjs.ConfigType,
  format = DATE_TIME_FORMAT,
): string {
  return dayjs(date).format(format)
}

/**
 * 将给定的日期对象或日期字符串格式化为指定的日期格式。
 * @param date 可选的日期对象或日期字符串，默认为当前日期。
 * @param format 格式化后的日期格式，默认为 DATE_FORMAT。
 * @returns 格式化后的日期字符串。
 */
export function formatToDate(
  date?: dayjs.ConfigType,
  format = DATE_FORMAT,
): string {
  return dayjs(date).format(format)
}

/**
 * 将秒数转换为天、小时、分钟和秒的更易读字符串格式
 * @param seconds 秒数
 * @returns 返回格式化的字符串，格式为 "天 小时 分钟 秒"
 */
export function secondsToDHMS(seconds: number) {
  const days = Math.floor(seconds / 86400)
  const hours = Math.floor((seconds % 86400) / 3600)
  const minutes = Math.floor((seconds % 3600) / 60)
  const secs = Math.floor(seconds % 60)
  return `${days}天 ${String(hours).padStart(2, '0')}小时 ${String(minutes).padStart(2, '0')}分钟 ${String(secs).padStart(2, '0')}秒`
}

export { dayjs }
